library("reactable")
library("htmltools")
labels <- drake::readd("labels")
metrics <- drake::readd("metrics") %>%
filter(dataset == params$dataset)
plot_data <- metrics %>%
filter(method != "Unintegrated") %>%
mutate(output_features = paste(output, features, sep = "-"))
medians <- metrics %>%
summarise(
batch_correction = median(batch_correction),
bio_conservation = median(bio_conservation)
) %>%
mutate(type = "Median")
ref_lines <- metrics %>%
dplyr::filter(method == "Unintegrated") %>%
dplyr::mutate(type = "Unintegrated") %>%
dplyr::select(type, batch_correction, bio_conservation) %>%
dplyr::bind_rows(medians)
ggplot(
plot_data,
aes(
x = batch_correction,
y = bio_conservation,
colour = method,
size = overall,
shape = output_features,
)
) +
geom_hline(
data = dplyr::filter(ref_lines, type == "Unintegrated"),
aes(yintercept = bio_conservation, linetype = type),
colour = "red"
) +
geom_vline(
data = dplyr::filter(ref_lines, type == "Unintegrated"),
aes(xintercept = batch_correction, linetype = type),
colour = "red"
) +
geom_hline(
data = dplyr::filter(ref_lines, type == "Median"),
aes(yintercept = bio_conservation, linetype = type),
colour = "blue"
) +
geom_vline(
data = dplyr::filter(ref_lines, type == "Median"),
aes(xintercept = batch_correction, linetype = type),
colour = "blue"
) +
geom_point(stroke = 1, fill = "white") +
geom_point(
data = filter(plot_data, features == "Full"),
aes(alpha = scaling),
shape = 4, size = 1.5, colour = "white"
) +
geom_point(
data = filter(plot_data, features == "HVG"),
aes(alpha = scaling),
shape = 4, size = 1.5
) +
scale_x_continuous(limits = c(0, 1)) +
scale_y_continuous(limits = c(0, 1)) +
scale_colour_brewer(palette = "Paired") +
scale_size_continuous(range = c(0.5, 5), limits = c(0, 1),
breaks = seq(0, 1, 0.2)) +
scale_shape_manual(
values = c(16, 21, 15, 22, 17, 24),
labels = c("Embedding (Full)", "Embedding (HVG)", "Features (Full)",
"Features (HVG)", "Graph (Full)", "Graph (HVG)")
) +
scale_alpha_manual(values = c(1, 0)) +
scale_linetype_manual(values = c(1, 5)) +
coord_fixed() +
labs(
x = "Batch correction",
y = "Bio conservation"
) +
guides(
colour = guide_legend(
title = "Method",
title.position = "top",
ncol = 2,
order = 10
),
shape = guide_legend(
title = "Output (features)",
title.position = "top",
ncol = 2,
byrow = TRUE,
order = 20
),
alpha = guide_legend(
title = "Scaling",
title.position = "top",
ncol = 2,
order = 30
),
size = guide_legend(
title = "Overall score",
title.position = "top",
direction = "horizontal",
nrow = 1,
label.position = "bottom",
order = 40
),
linetype = guide_legend(
title = "",
title.position = "top",
ncol = 1,
override.aes = list(colour = c("blue", "red")),
order = 90
)
) +
theme(
legend.position = "right",
axis.text = element_text(size = 7),
panel.border = element_rect(fill = NA)
)
make_colour_pal <- function(colours, bias = 1) {
get_color <- colorRamp(colours, bias = bias)
function(x) {
ifelse(
is.na(x),
"white",
rgb(get_color(x), maxColorValue = 255)
)
}
}
make_cell_func <- function(colours) {
colour_pal <- make_colour_pal(colours)
function(value) {
color <- colour_pal(value)
value <- format(round(value, 2), nsmall = 2)
div(
class = "score",
style = list(background = color),
value
)
}
}
overall_cell <- make_cell_func(
c("#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0",
"#225ea8")
)
batch_cell <- make_cell_func(
c("#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497",
"#ae017e")
)
bio_cell <- make_cell_func(
c("#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548",
"#d7301f")
)
score_column <- function(maxWidth = 80, class = "cell number", ...) {
colDef(maxWidth = maxWidth, align = "center", class = class, ...)
}
tbl <- metrics %>%
select(-scenario, -dataset, -input, -full_method) %>%
relocate(method, output, features, scaling) %>%
reactable(
pagination = FALSE,
defaultSorted = "overall",
defaultSortOrder = "desc",
defaultColDef = colDef(class = "cell", headerClass = "header"),
defaultColGroup = colGroup(headerClass = "group-header"),
columnGroups = list(
colGroup(
name = "Batch correction",
columns = unname(labels$metrics$batch)
),
colGroup(
name = "Bio conservation",
columns = unname(labels$metrics$bio)
)
),
columns = list(
method = colDef(
name = "Method",
headerStyle = list(fontWeight = 700),
filterable = TRUE
),
output = colDef(
name = "Output",
headerStyle = list(fontWeight = 700),
filterable = TRUE
),
scaling = colDef(
name = "Scaling",
headerStyle = list(fontWeight = 700),
filterable = TRUE
),
features = colDef(
name = "Features",
headerStyle = list(fontWeight = 700),
filterable = TRUE
),
overall = score_column(
name = "Overall score",
headerStyle = list(fontWeight = 700),
cell = overall_cell,
class = "cell number border-left"
),
batch_correction = score_column(
name = "Overall",
cell = batch_cell,
class = "cell number border-left"
),
PCR_batch = score_column(
name = "PCR batch",
cell = batch_cell
),
ASW_label_batch = score_column(
name = "Batch ASW",
cell = batch_cell
),
iLISI = score_column(
name = "Graph\niLISI",
cell = batch_cell,
),
graph_connectivity = score_column(
name = "Graph connectivity",
cell = batch_cell,
),
kBET = score_column(
name = "kBET",
cell = batch_cell
),
bio_conservation = score_column(
name = "Overall",
cell = bio_cell,
class = "cell number border-left",
),
NMI_cluster_label = score_column(
name = "NMI cluster/label",
cell = bio_cell,
),
ARI_cluster_label = score_column(
name = "ARI cluster/label",
cell = bio_cell
),
ASW_label = score_column(
name = "Label ASW",
cell = bio_cell
),
isolated_label_F1 = score_column(
name = "Isolated label F1",
cell = bio_cell
),
isolated_label_silhouette = score_column(
name = "Isolated label silhouette",
cell = bio_cell
),
cLISI = score_column(
name = "Graph cLISI",
cell = bio_cell
),
HVG_overlap = score_column(
name = "HVG conservation",
cell = bio_cell
),
cell_cycle = score_column(
name = "Cell cycle conservation",
cell = bio_cell
),
trajectory = score_column(
name = "Trajectory conservation",
cell = bio_cell
)
),
compact = TRUE,
highlight = TRUE,
showSortIcon = FALSE,
borderless = TRUE,
class = "metrics-table"
)
div(class = "metrics",
# div(class = "title",
# h2(paste("Metrics table for the", params$dataset, "dataset")),
# ),
tbl
)
metric_barplot <- function(metrics, metric, label) {
metric_str <- rlang::as_label(rlang::enquo(metric))
metric_vec <- metrics[[metric_str]]
ref_lines <- tribble(
~Value, ~Type,
median(metric_vec, na.rm = TRUE), "Median",
metric_vec[metrics$method == "Unintegrated"], "Unintegrated"
)
plot <- ggplot(
metrics,
aes(
x = fct_reorder(full_method, {{ metric }},
.fun = max),
y = {{ metric }},
fill = method
)
) +
geom_hline(
data = ref_lines,
aes(yintercept = Value, colour = Type, linetype = Type)
) +
geom_col() +
geom_point(
aes(shape = output),
size = 4, colour = "white",
show.legend = c(fill = FALSE, shape = TRUE)
) +
geom_text(
data = filter(metrics, is.na({{ metric }})),
y = 0.5, label = "Not computed"
) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
scale_linetype_manual(values = c(1, 5)) +
scale_colour_manual(values = c("blue", "red"), guide = FALSE) +
scale_shape_manual(values = c(21, 22, 23)) +
facet_grid(features ~ scaling) +
labs(y = label) +
guides(
fill = guide_legend(
title = "Method",
title.position = "top",
ncol = 2,
order = 10
),
shape = guide_legend(
title = "Output",
title.position = "top",
ncol = 2,
byrow = TRUE,
override.aes = list(colour = "grey60", stroke = 1),
order = 20
),
linetype = guide_legend(
title = "",
title.position = "top",
ncol = 1,
override.aes = list(colour = c("blue", "red")),
order = 90
)
) +
theme(
legend.position = "right",
axis.text = element_text(size = 7),
axis.title.y = element_blank(),
panel.border = element_rect(fill = NA),
strip.background = element_rect(fill = "black"),
strip.text = element_text(size = 10, colour = "white")
)
if (any(!is.na(metric_vec))) {
plot <- plot + scale_y_continuous(limits = c(0, 1))
}
plot
}
metric_barplot(metrics, overall, "Overall score")
src_list <- lapply(names(labels$metrics$batch), function(label) {
metric <- labels$metrics$batch[label]
src <- c(
"### <<label>> {.unnumbered}",
"```{r metrics-batch-<<metric>>}",
"metric_barplot(metrics, <<metric>>, '<<label>>')",
"```",
""
)
knitr::knit_expand(text = src, delim = c("<<", ">>"))
})
out <- knitr::knit_child(text = unlist(src_list), options = list(cache = FALSE))
metric_barplot(metrics, batch_correction, 'Batch correction')
metric_barplot(metrics, PCR_batch, 'PCR batch')
metric_barplot(metrics, ASW_label_batch, 'Batch ASW')
metric_barplot(metrics, iLISI, 'Graph iLISI')
metric_barplot(metrics, graph_connectivity, 'Graph connectivity')
metric_barplot(metrics, kBET, 'kBET')
src_list <- lapply(names(labels$metrics$bio), function(label) {
metric <- labels$metrics$bio[label]
src <- c(
"### <<label>> {.unnumbered}",
"```{r metrics-bio-<<metric>>}",
"metric_barplot(metrics, <<metric>>, '<<label>>')",
"```",
""
)
knitr::knit_expand(text = src, delim = c("<<", ">>"))
})
out <- knitr::knit_child(text = unlist(src_list), options = list(cache = FALSE))
metric_barplot(metrics, bio_conservation, 'Bio conservation')
metric_barplot(metrics, NMI_cluster_label, 'NMI cluster/label')
metric_barplot(metrics, ARI_cluster_label, 'ARI cluster/label')
metric_barplot(metrics, ASW_label, 'Label ASW')
metric_barplot(metrics, isolated_label_F1, 'Isolated label F1')
metric_barplot(metrics, isolated_label_silhouette, 'Isolated label silhouette')
metric_barplot(metrics, cLISI, 'Graph cLISI')
metric_barplot(metrics, HVG_overlap, 'HVG conservation')
metric_barplot(metrics, cell_cycle, 'Cell cycle conservation')
metric_barplot(metrics, trajectory, 'Trajectory conservation')
full_src <- list()
for (feature in levels(metrics$features)) {
full_src <- c(
full_src,
paste("##", feature, "{.unnumbered .tabset .tabset-pills .tabset-fade}"),
""
)
for (scale in levels(metrics$scaling)) {
full_src <- c(
full_src,
paste("###", scale, "{.unnumbered .tabset .tabset-pills}"), ""
)
metrics_sel <- filter(metrics, features == feature, scaling == scale)
src_list <- map2_chr(
metrics_sel$method, metrics_sel$output,
function(.method, .output) {
batch_path <- here(
"data", params$dataset,
tolower(scale),
if_else(feature == "Full", "full_feature", "hvg"),
paste(
labels$methods[.method],
case_when(
.output == "Features" ~ "full",
.output == "Embedding" ~ "embed",
.output == "Graph" ~ "knn"
),
"batch.png", sep = "_"
)
)
labels_path <- str_replace(batch_path, "batch", "labels")
src <- c(
"#### <<.method>> - <<.output>> {.tabset .unnumbered}",
"",
"##### Batch {.unnumbered}",
"```{r umap-<<feature>>-<<scale>>-<<.method>>-<<.output>>-batch}",
"knitr::include_graphics('<<batch_path>>')",
"```",
"",
"##### Labels {.unnumbered}",
"```{r umap-<<feature>>-<<scale>>-<<.method>>-<<.output>>-labels}",
"knitr::include_graphics('<<labels_path>>')",
"```",
""
)
knitr::knit_expand(text = src, delim = c("<<", ">>"))
})
full_src <- c(full_src, src_list)
}
}
out <- knitr::knit_child(text = unlist(full_src), options = list(cache = FALSE))
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/mnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/mnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/scanorama_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/scanorama_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/scanorama_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/scanorama_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/seurat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/seurat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/harmony_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/harmony_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/bbknn_knn_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/bbknn_knn_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/combat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/combat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/fastmnn_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/fastmnn_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/fastmnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/full_feature/fastmnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/mnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/mnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanorama_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanorama_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanorama_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanorama_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/seurat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/seurat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/harmony_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/harmony_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/bbknn_knn_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/bbknn_knn_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scvi_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scvi_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/combat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/combat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/liger_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/liger_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanvi_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/scanvi_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/fastmnn_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/fastmnn_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/fastmnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/fastmnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/unintegrated_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/full_feature/unintegrated_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/mnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/mnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/scanorama_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/scanorama_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/scanorama_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/scanorama_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/seurat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/seurat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/harmony_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/harmony_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/bbknn_knn_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/bbknn_knn_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/combat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/combat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/fastmnn_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/fastmnn_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/fastmnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/scaled/hvg/fastmnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/mnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/mnn_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanorama_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanorama_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanorama_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanorama_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/seurat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/seurat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/harmony_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/harmony_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/bbknn_knn_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/bbknn_knn_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scvi_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scvi_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/combat_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/combat_full_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/liger_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/liger_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanvi_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/scanvi_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/fastmnn_embed_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/fastmnn_embed_labels.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/fastmnn_full_batch.png')
knitr::include_graphics('/Users/luke.zappia/Documents/Projects/scIB-results/data/mini_sim/unscaled/hvg/fastmnn_full_labels.png')